Computer systems are known to include a central processing unit, system memory, video graphic processing circuitry, audio processing circuitry, and peripheral ports. The peripheral ports allow the central processing unit to access peripheral devices such as monitors, printers, external tape drives, video sources, etc., to facilitate execution of computer applications such as word processing applications, drawing and/or painting applications, spreadsheet applications, video games, broadcast television signals, cable television signals, etc. For example, as the central processing unit processes an application, it provides image data to the video graphics circuitry, which, in turn, processes the image data and provides processed image data to a monitor.
At a minimum, the image data provided by the central processing unit includes physical coordinates of an object with respect to the display coordinates and color information. The basic information is typical for displaying a two-dimensional image that is commonly found in a word processing application, drafting application, presentation application, etc. For more complex display options, such as three-dimensional imagery, the image data (i.e., object parameters) may further include texture coordinates, alpha-blending parameters, and bump map coordinates. The texture coordinates correlate the object to a particular texture map such that the object's surface has the pattern of the texture map. The alpha-blending parameter indicates the translucency of the object. If the object is solid (i.e., not translucent), the alpha-blending value will be a one. If the object is translucent, the alpha-blending parameter will indicate the level of translucency in the range of 0 (e.g., transparent) to 1 (e.g., solid).
The bump map coordinates relate the object to a bump map, which includes a topological representation of roughness that may be imposed upon the surface of the object. In general, providing a "bumped" surface, which may be referred to as applying a shading function, on an object is done on a pixel by pixel basis. The bumping process (i.e., providing an appearance of roughness to a surface) begins by determining a normal vector (N) of the object, where the normal vector is perpendicular to the planer surface of the object. Next, a bump vector (.DELTA.N) is determined by using the partial derivatives at a point .smallcircle. (the mapping coordinates) on the surface along the u and v directions (u and v are the axes of the bump surface), the partial derivatives obtain the normal vector N as N=O.sub.u.times.O.sub.v and defined two additional vectors .zeta.=N.times.O.sub.v .tau.=N.times.O.sub.u to form a local coordinate system. Then perturbation .DELTA.N is defined as .DELTA.N=B.sub.u.zeta.-B.sub.v.tau. where B.sub.u and B.sub.v are the partial derivatives of the bump map B(u, v). Note that .DELTA.N is a vector in the plane of .zeta. and .tau., which implies it is also on the surface. The shading results from the Lambertian shading formula: ##EQU1##
These mathematical steps must be taken for each pixel of the object to apply the shading function to the object. Due the complex nature of the equations and the processing power required to execute them, bump mapping is cost prohibitive for all but the very high-end computer products that have significant memory and processing resources.
Therefore, a need exists for a method and apparatus the provides bump mapping of an object without the computational overhead of existing bump mapping techniques.